/**
 * ---------------- 自定义公用方法 ----------------
 */

// 格式化时间
export const formatDate = (date, fmt) => {
  let o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日
    'h+': date.getHours(), // 小时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    'S': date.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
    }
  }
  return fmt
}

// 参数打包公用方法，接收3个参数（当前搜索模式状态、简单搜索条件、高级搜索条件），若有日期范围，添加开始时间和结束时间作为参数
export const paramsPackaging = (searchStatus, searchForm, searchGroupForm, dateStart, dateEnd) => {
  let paramsData // 参数包存放位置
  if (!searchStatus) { // 单列查询时
    if (searchForm.value === '') { // 表单为空时不传参，在调用时进行判断做初始化psize,pnum查询
      // 此处不做任何处理，但属必要条件判断，否则导致表单为空时传入空值参数
    } else if (searchForm.key === 'dtStart') { // 是=号查询条件时
      let params = [
        { key: searchForm.key, value: searchForm.value, operate: 'eq' }
      ]
      paramsData = params
    } else if (searchForm.key === 'createStamp') { // 是日期选择器时
      let dateArr = [ // 将日期分为开始日期和结束日期进行打包
        { key: 'dateStart', value: dateStart, operate: searchForm.key },
        { key: 'dateEnd', value: dateEnd, operate: searchForm.key }
      ]
      paramsData = dateArr // 存放参数
    } else {
      let params = [
        { key: searchForm.key, value: searchForm.value, operate: 'lk' }
      ]
      paramsData = params
    }
  } else { // 高级查询时
    let arr = [] // 参数包存放位置
    let dateArr = [] // 日期范围参数存放位置
    let newArr = [] // 所有参数组合存放位置
    for (let item in searchGroupForm) { // 循环高级查询表单
      if (searchGroupForm.hasOwnProperty(item)) { // 取得表单对象所有属性和值
        if (searchGroupForm[item]) { // 有值
          if (searchGroupForm[item] instanceof Array) { // 针对日期范围进行数据格式化
            searchGroupForm[item].forEach(data => {
              if (data !== '') { // 有值则将日期分为开始日期和结束日期进行打包
                dateArr = [
                  { key: 'dateStart', value: dateStart },
                  { key: 'dateEnd', value: dateEnd }
                ]
              }
            })
          } else if (item === 'dtStart') { // 是=号查询条件时
            let param = { // 定义公共属性参数
              key: item,
              value: searchGroupForm[item],
              operate: 'eq'
            }
            arr.push(param) // 存放有值参数
          } else {
            let param = { // 定义公共属性参数
              key: item,
              value: searchGroupForm[item],
              operate: 'lk' // 添加=号查询参数
            }
            arr.push(param) // 存放有值参数
          }
          newArr = arr.concat(dateArr) // 组合有值参数和日期参数
        }
      }
    }
    if (newArr.length) { // 组合条件参数存在时，存放参数
      paramsData = newArr
    }
  }
  return paramsData
}

// 省市级联匹配label
export const areaData = (area, arrData) => {
  let arr = []
  area.forEach((item, index) => {
    if (arrData[0]) {
      if (item.value === arrData[0]) {
        arr.push(item.label)
        if (arrData[1]) {
          let child = item.children.filter(l => {
            return l.value === arrData[1]
          })
          arr.push(child[0].label)
          if (arrData[2]) {
            item.children.forEach(sub => {
              if (sub.value === arrData[1]) {
                let subChild = sub.children.filter(l => {
                  return l.value === arrData[2]
                })
                arr.push(subChild[0].label)
              }
            })
          }
        }
      }
    }
  })
  return arr.join('-')
}
// 省市级联匹配value
export const areaValue = (area, address) => {
  // console.log(area, address)
  let arrData = address.split("-")
  // console.log(arrData)
  let arr = []
  area.forEach((item, index) => {
    if (arrData[0]) {
      if (item.label === arrData[0]) {
        arr.push(item.value)
        if (arrData[1]) {
          let child = item.children.filter(l => {
            return l.label === arrData[1]
          })
          arr.push(child[0].value)
          if (arrData[2]) {
            item.children.forEach(sub => {
              if (sub.label === arrData[1]) {
                let subChild = sub.children.filter(l => {
                  return l.label === arrData[2]
                })
                arr.push(subChild[0].value)
              }
            })
          }
        }
      }
    }
  })
  return arr
}
// ---------------- 以上公用方法严禁擅自修改！如遇问题请先联系提供者 ----------------
